Sublime Text のプラグイン書いてたらテストツールができてたよみたいな話
概要
Sublime Text のプラグインでSublimeSocketってのを作ってサーバと繋いだりして遊んでるんだけど、
それの簡易なテスト環境作って放置しておいたら、弄られて凄い事になってた。
様子
テストスイートを実行、内容に則ってエディタ側がとてもキモい動きをする。
解説
JSONを内包したオレオレDSLで、SublimeSocket APIのテストを書く。
それらを.sst拡張子のファイルにまとめて、テストスイートとして実行。
エディタ側に対して、テストスイートの各1件ずつが実行される。
フィルタをセット→フィルタに文字列を送る→hitしたらAPIを実行、
ファイルを作る→ファイルに書き込む→消す、
ファイルを作る→ファイルの特定箇所を選択する、
ファイルを作る→ファイルの特定箇所を選択する→書き込む、
バッファを作る→バッファの特定箇所を選択する→書き込む、
ダイアログを出す、
ツールチップを出す、
以上を連鎖させたり連動させたり。
入力側から最終出力される値までで管理し、assertなどでチェック、結果比較をしている。
Sublime側に対してどうしても人間がキー入力する必要がある部分(GUI、ツールチップ選択など)があり、
そのあたりは今のところ手で押している。
ムービー中で流れているテストは90件くらい。オールグリーンヤッター!
今後
テストスイートが作られた段階で、SublimeSocketのAPIはSublime TextのAPIを仮想化していて、
他のエディタでの同様の機構を呼び出す事も可能になっていた。
とりあえずVim版とかLightTable版を書いてみようかな。